import logging
import sys
import os
from app.core.config import settings
from datetime import datetime

# 关闭 aio-pika 和 aiormq 的 DEBUG 日志
logging.getLogger("aio_pika").setLevel(logging.INFO)
logging.getLogger("aiormq").setLevel(logging.INFO)

# 可选：也关闭 pika（如果你同时用了 pika）
logging.getLogger("pika").setLevel(logging.INFO)

def setup_logging():
    """设置应用日志配置"""
    # 创建日志格式
    log_format = "%(asctime)s - %(name)s - %(levelname)s - %(message)s"
    date_format = "%Y-%m-%d %H:%M:%S"
    
    # 设置根日志级别
    root_logger = logging.getLogger()
    root_logger.setLevel(getattr(logging, settings.LOG_LEVEL))
    
    # 清除已有的处理器
    for handler in root_logger.handlers[:]:
        root_logger.removeHandler(handler)
    
    # 添加控制台处理器
    console_handler = logging.StreamHandler(sys.stdout)
    console_handler.setFormatter(logging.Formatter(log_format, datefmt=date_format))
    root_logger.addHandler(console_handler)
    
    # 如果不是开发环境，添加文件处理器
    if settings.ENVIRONMENT != "development":
        # 创建日志目录
        log_dir = "logs"
        if not os.path.exists(log_dir):
            os.makedirs(log_dir)
        
        # 获取当前日期作为日志文件名
        today = datetime.now().strftime("%Y-%m-%d")
        log_file = os.path.join(log_dir, f"app-{today}.log")
        
        # 添加文件处理器
        file_handler = logging.FileHandler(log_file, encoding="utf-8")
        file_handler.setFormatter(logging.Formatter(log_format, datefmt=date_format))
        root_logger.addHandler(file_handler)
    
    # 设置第三方库的日志级别
    logging.getLogger("uvicorn").setLevel(logging.INFO)
    logging.getLogger("fastapi").setLevel(logging.INFO)
    
    # 如果是调试模式，设置更详细的日志
    if settings.DEBUG:
        root_logger.setLevel(logging.DEBUG)
        logging.getLogger("uvicorn").setLevel(logging.DEBUG)
        logging.getLogger("fastapi").setLevel(logging.DEBUG)